﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Sigecov.Models;
using System.Linq;
namespace Sigecov.Formularios
{
    public partial class FrmCategoria : Sigecov.Formularios.FrmBase
    {
        public FrmCategoria()
        {
            InitializeComponent();
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            Ferramenta.ResetarControles(this.Controls);
        }

        private void btnSair_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void btnDeletar_Click(object sender, EventArgs e)
        {
            if (_tipoOperacao == "DELETAR")
            {
                using (SigecovContext DB = new SigecovContext())
                {
                    try
                    {
                        DialogResult confirmar = MessageBox.Show("Deseja deletar a categoria "+txtCategoria.Text.ToUpper()+"?", "Aviso", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                        if (confirmar.ToString().ToUpper() == "YES")
                        {
                            Categoria categoria = new Categoria();
                            categoria = DB.Categorias.Find(_idAcao);
                            categoria.Deletar(categoria, DB);
                            MessageBox.Show("Categoria deletada com sucesso!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            Close();
                        }
                    }
                    catch
                    {
                        MessageBox.Show("Falha ao deletar a categoria!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        btnDeletar.Focus();
                    }
                }
            }
        }

        private void btnSalvar_Click(object sender, EventArgs e)
        {
            if (_tipoOperacao == "INCLUIR")
            {
                using (SigecovContext DB = new SigecovContext())
                {
                    try
                    {
                        Categoria categoria = new Categoria();
                        if (!(string.IsNullOrWhiteSpace(txtCategoria.Text)))
                        {
                            var itens = DB.Categorias.Where(c => c.catNome == txtCategoria.Text);
                            if (itens.Count() == 0)
                            {
                                categoria.catNome = txtCategoria.Text.Trim();
                                categoria.Cadastrar(categoria, DB);
                                MessageBox.Show("Categoria cadastrada com sucesso!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                Ferramenta.ResetarControles(this.Controls);
                                txtCategoria.Focus();
                            }
                            else
                            {
                                MessageBox.Show("Essa categoria já foi cadastrada!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                                txtCategoria.Clear();
                                txtCategoria.Focus();
                            }
                        }
                        else
                        {
                            MessageBox.Show("Informe uma categoria!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            txtCategoria.Clear();
                            txtCategoria.Focus();
                        }
                    }
                    catch
                    {
                        MessageBox.Show("Falha ao inserir a categoria!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        btnSalvar.Focus();
                    }
                }
            }
            else if (_tipoOperacao == "ALTERAR")
            {
                using (SigecovContext DB = new SigecovContext())
                {
                    try
                    {
                        Categoria categoria = new Categoria();
                        if (!(string.IsNullOrWhiteSpace(txtCategoria.Text)))
                        {
                            categoria = DB.Categorias.Find(_idAcao);
                            categoria.catNome = txtCategoria.Text.Trim();
                            categoria.Alterar(categoria, DB);
                            MessageBox.Show("Categoria alterada com sucesso!", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            Close();
                        }
                        else
                        {
                            MessageBox.Show("Informe uma categoria!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            txtCategoria.Clear();
                            txtCategoria.Focus();
                        }
                    }
                    catch
                    {
                        MessageBox.Show("Falha ao alterar a categoria!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        btnSalvar.Focus();
                    }
                }
            }
        }

        private void FrmCategoria_Load(object sender, EventArgs e)
        {
            txtCategoria.Focus();
            if (_tipoOperacao == "INCLUIR")
            {
                this.lblTituloAcao.Text = "Cadastrar Categoria";
                Ferramenta.ResetarControles(this.Controls);
                this.AcaoIncluir();
            }
            else if (_tipoOperacao == "ALTERAR")
            {
                this.lblTituloAcao.Text = "Alterar Categoria";
                this.AcaoAlterar();
                using (SigecovContext DB = new SigecovContext())
                {
                    Categoria categoria = DB.Categorias.Find(_idAcao);
                    txtCategoria.Text = categoria.catNome;
                }
            }
            else if (_tipoOperacao == "DELETAR")
            {
                this.lblTituloAcao.Text = "Deletar Categoria";
                this.AcaoDeletar();
                using (SigecovContext DB = new SigecovContext())
                {
                    Categoria categoria = DB.Categorias.Find(_idAcao);
                    txtCategoria.Text = categoria.catNome;
                    Ferramenta.DesativarControles(this.Controls);
                }
            }
        }
    }
}
